import Guacamole from 'guacamole-common-js'

function getCodeDetail (code:number) {
  switch (code) {
    case Guacamole.Status.Code.UNSUPPORTED:
      console.error('客户端不支持', code)
      return '客户端不支持'
    case Guacamole.Status.Code.SERVER_ERROR:
      console.error('服务端错误', code)
      return '服务端错误'
    case Guacamole.Status.Code.SERVER_BUSY:
      console.error('服务端忙', code)
      return '服务端忙'
    case Guacamole.Status.Code.UPSTREAM_TIMEOUT:
      console.error('上游超时', code)
      return '上游超时'
    case Guacamole.Status.Code.UPSTREAM_ERROR:
      console.error('上游错误', code)
      return '上游错误'
    case Guacamole.Status.Code.RESOURCE_NOT_FOUND:
      console.error('资源没找到', code)
      return '资源没找到'
    case Guacamole.Status.Code.RESOURCE_CONFLICT:
      console.error('资源冲突', code)
      return '资源冲突'
    case Guacamole.Status.Code.RESOURCE_CLOSED:
      console.error('资源已关闭', code)
      return '资源已关闭'
    case Guacamole.Status.Code.UPSTREAM_NOT_FOUND:
      console.error('上游未发现', code)
      return '上游未发现'
    case Guacamole.Status.Code.UPSTREAM_UNAVAILABLE:
      console.error('上游不可用', code)
      return '上游不可用'
    case Guacamole.Status.Code.SESSION_CONFLICT:
      console.error('会话冲突', code)
      return '会话冲突'
    case Guacamole.Status.Code.SESSION_TIMEOUT:
      console.error('会话超时', code)
      return '会话超时'
    case Guacamole.Status.Code.SESSION_CLOSED:
      console.error('会话关闭', code)
      return '会话关闭'
    case Guacamole.Status.Code.CLIENT_BAD_REQUEST:
      console.error('客户端错误的请求', code)
      return '客户端错误的请求'
    case Guacamole.Status.Code.CLIENT_UNAUTHORIZED:
      console.error('客户端认证失败', code)
      return '客户端认证失败'
    case Guacamole.Status.Code.CLIENT_FORBIDDEN:
      console.error('客户端禁止访问', code)
      return '客户端禁止访问'
    case Guacamole.Status.Code.CLIENT_TIMEOUT:
      console.error('客户端超时', code)
      return '客户端超时'
    case Guacamole.Status.Code.CLIENT_OVERRUN:
      console.error('客户端重复', code)
      return '客户端重复'
    case Guacamole.Status.Code.CLIENT_BAD_TYPE:
      console.error('错误的客户端类型', code)
      return '错误的客户端类型'
    case Guacamole.Status.Code.CLIENT_TOO_MANY:
      console.error('客户端连接过多', code)
      return '客户端连接过多'
  }
}

// | 514  | UPSTREAM_TIMEOUT     | 上游服务器无响应。大部分情况下，上游服务器是远程桌面服务器   |
// | 515  | UPSTREAM_ERROR       | 上游服务器错误。大部分情况下，上游服务器是远程桌面服务器     |
// | 516  | RESOURCE_NOT_FOUND   | 关联的文件、或流资源未找到，操作失败                         |
// | 517  | RESOURCE_CONFLICT    | 资源正在本使用或被锁住，操作请求被阻止                       |
// | 518  | RESOURCE_CLOSED      | 关联的资源已经被关闭，操作无法继续                           |
// | 519  | UPSTREAM_NOT_FOUND   | 上游服务器未找到，或在网络中丢失。大部分情况下，上游服务器是远程桌面服务器 |
// | 520  | UPSTREAM_UNAVALIABLE | 上游服务器拒绝连接服务。大部分情况下，上游服务器是远程桌面服务器 |
// | 768  | CLIENT_BAD_REQUEST   | 请求参数非法或无效                                           |
// | 769  | CLIENT_UNAUTHORIZED  | 因用户未登陆产生的无权限。注意，用户可能已登陆到 Occamy，但没有登陆到对应的远程桌面服务器 |
// | 771  | CLIENT_FORBIDDEN     | 缺少权限，登陆无法解决此问题                                 |
// | 776  | CLIENT_TIMEOUT       | 客户端超时，通常为用户的 Occamy 或浏览器                  |
// | 781  | CLIENT_VOERRUN       | 客户端发送了协议允许的更多数据                               |
// | 783  | CLIENT_BAD_TYPE      | 客户端发送的数据包含非法类型                                 |
// | 797  | CLIENT_TOO_MANY      | 客户端已使用太多资源。在产生新的请求前，旧资源必须被释放     |
const statusCode = {
  514: '连接【后端服务器】失败，连接超时', //    UPSTREAM_TIMEOUT
  515: '连接【后端服务器】失败，服务端错误', //    UPSTREAM_ERROR
  516: '连接【516】失败', // RESOURCE_NOT_FOUND
  517: '连接【517】失败', // RESOURCE_CONFLICT
  518: '连接【518】失败', // RESOURCE_CLOSED
  519: '连接【登录到远程桌面】失败', // UPSTREAM_NOT_FOUND
  520: '连接【登录到远程桌面】失败', // UPSTREAM_UNAVALIABLE
  768: '连接【后端服务器】失败，请求参数非法或无效', // UPSTREAM_UNAVALIABLE
  769: '连接【后端服务器】失败，登陆失败' // UPSTREAM_UNAVALIABLE
}

export { getCodeDetail, statusCode }
